home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / telecomm / sticpsrc.lzh / SOURCE.ARC / MISC.C < prev    next >
C/C++ Source or Header  |  1988-02-16  |  1KB  |  59 lines

  1. /* Miscellaneous machine independent utilities */
  2.  
  3. #include "global.h"
  4.  
  5. /* Convert hex-ascii to integer */
  6. int
  7. htoi(s)
  8. char *s;
  9. {
  10.     int i = 0;
  11.     char c;
  12.  
  13.     while((c = *s++) != '\0'){
  14.         if(c == 'x')
  15.             continue;    /* allow 0x notation */
  16.         if('0' <= c && c <= '9')
  17.             i = (i * 16) + (c - '0');
  18.         else if('a' <= c && c <= 'f')
  19.             i = (i * 16) + (c - 'a' + 10);
  20.         else if('A' <= c && c <= 'F')
  21.             i = (i * 16) + (c - 'A' + 10);
  22.         else
  23.             break;
  24.     }
  25.     return i;
  26. }
  27. /* replace terminating end of line marker(s) with null */
  28. rip(s)
  29. register char *s;
  30. {
  31.     register char *cp;
  32.  
  33.     if((cp = index(s,'\r')) != NULLCHAR)
  34.         *cp = '\0';
  35.     if((cp = index(s,'\n')) != NULLCHAR)
  36.         *cp = '\0';
  37. }
  38. /* Case-insensitive string comparison */
  39. strncasecmp(a,b,n)
  40. register char *a,*b;
  41. register int n;
  42. {
  43.     char a1,b1;
  44.  
  45.     while(n-- != 0 && (a1 = *a++) != '\0' && (b1 = *b++) != '\0'){
  46.         if(a1 == b1)
  47.             continue;    /* No need to convert */
  48.         a1 = tolower(a1);
  49.         b1 = tolower(b1);
  50.         if(a1 == b1)
  51.             continue;    /* NOW they match! */
  52.         if(a1 > b1)
  53.             return 1;
  54.         if(a1 < b1)
  55.             return -1;
  56.     }
  57.     return 0;
  58. }
  59.